﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//int main()
//{
//	printf("%zd\n", sizeof(int));
//	printf("%zd\n", sizeof(long int));
//	printf("%zd\n", sizeof(long  long int));
//	printf("%zd\n", sizeof(short int));
//	printf("%zd\n", sizeof(char));
//	printf("%zd\n", sizeof(float));
//	printf("%zd\n", sizeof(double));
//	printf("%zd\n", sizeof(long double));
//	printf("%zd\n", sizeof(_Bool));
//	int a = 10;
//	int b = 20;
//	printf("%d\n", sizeof(a + b));
//	
//
//	// int = signed int int默认带有正负号
//	signed char c = -100;
//	printf("%d ", c);
//	return 0;
//}

//#include <stdio.h>
//int a = 200;
//int main()
//{
//	int a = 100;
//	printf("%d ", a);
//	return 0;
	//局部变量和全局变量同名的时候，局部变量优先
//}
//#include <stdio.h>
//int main()
//{
//	int a = 1;
//	int b = 2;
//	int c = a + 5;
//	int d = b + 3;
//	printf("%d %d\n", c, d);
//	
//	float x = 6 / 4;
//	int y = 12 / 4;
//	printf("%d\n", y);
//	printf("%f\n", x); // 变量x的类型是float,但6/4得到结果应该是1.0，而不是1.0
//		// 这是因为两个运算数必须至少有一个是浮点数，这样C语言才会进行浮点数的除法运算
//	float e = 6.0 / 4;
//	printf("%f\n", e);
//	
//
//	int score = 5;
//	int score1 = 0;
//	int score2 = 0;
//	score1 = (score / 20) * 100; //这样子的运算会造成 5 / 20 的结果等于0，不会等于0.25
//	// 要想等于0.25，必须让其中一方的运算数是浮点数
//	printf("%d\n", score1);
//	score2 = (score / 20.0) * 100;
//	printf("%d\n", score2);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	printf("%d\n", 9 % 2); //1
//	printf("%d\n", -9 % 2); //-1
//	printf("%d\n", 9 % -2); //1
//	printf("%d\n", -9 % -2); //1
//	//模运算的正负号是由第一个运算数的正负号决定的
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	int d = 0;
//	printf("%d\n", a++);
//	printf("%d\n", ++a);
//	printf("%d\n", b--);
//	printf("%d\n", --b);
//	int x = 0;
//	x = (a++, b--, x = c + 10,--d); 
//	//逗号表达式只会运算最后一位
//	//即整个表达式的值为最后一个子表达式的结果 
//	printf("%d\n", x);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int y = 0;
//	int m = 0;
//	int d = 0;
//	scanf("%d-%d-%d", &y, &m, &d);
//	//输入2025/11/7就会输出2025 0 0 造成解析数据失败。
//	printf("%d %d %d\n", y, m, d);
//}

//为避免这种情况，scanf() 提供了⼀个赋值忽略符 *
//这样无论用户输入2025-11-7还是2025/11/7、2025~11~7都能输出2025 11 7
//#include <stdio.h>
//int main()
//{
//	int y = 0;
//	int m = 0;
//	int d = 0;
//	scanf("%d%*c%d%*c%d", &y, &m, &d);
	//输入2025/11/7就会输出2025 0 0 造成解析数据失败。
	//把 * 加在任何占位符的百分号后⾯，该占位符就不会返回值，解析后将被丢弃
	//表⽰这个占位符没有对应的变量，解读后不必返回。
	//printf("%d %d %d\n", y, m, d);
//}
//#include<stdio.h>
//int main()
//{
//	printf("%zd\n", sizeof(char));
//	printf("%zd\n", sizeof(int));
//	printf("%zd\n", sizeof(short int));
//	printf("%zd\n", sizeof(long int));
//	printf("%zd\n", sizeof(long long int));
//	printf("%zd\n", sizeof(float));
//	printf("%zd\n", sizeof(double));
//	printf("%zd\n", sizeof(long double));
//	printf("%zd\n", sizeof(_Bool));
//	int a = 10;
//	int b = 20;
//	printf("%d\n", sizeof(a + b));
//	printf("%zd\n", sizeof(3 + 3.5));  //4
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	short s = 0;
//	int b = 10;
//	printf("%d\n", sizeof(s=1+1));
//	printf("%d\n", sizeof(3 + 10));
//	printf("s = %d\n", s);
//	return 0;
//}



//#include <stdio.h>
//int main()
//{
//	int a = 1;
//	int b = 2;
//	int c = a - 5;
//	int d = b - 3;
//	printf("%d %d\n", c, d); //6  7
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	float x = 6 / 4;
//	int y = 12 / 4;
//	printf("%f\n", x); // 变量x的类型是float,但6/4得到结果应该是1.5，而不是1.0
//	printf("%d\n", y);
//	//这是因为两个运算数必须至少有一个是浮点数，这样C语言才会进行浮点数的除法运算
//	float e = 6.0 / 4;
//	printf("%f\n", e);
//}

//#include<stdio.h>
//int main()
//{
//	int a = 1;
//	int b = 2;
//	int c = 3;
//	int d = 0;
//	d = c = b = a + 1;//连续赋值，从右向左依次赋值的。
//	printf("%d", d);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 1;
//	int b = 2;
//	int c = 3;
//	int d = 0;
//	b = a + 1;
//	c = b;
//	d = c;
//	printf("%d", d);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	int d = 0;
//	int x = 0;
//	x = (a++, b--, x = c + 10, --d); //
//	printf("%d", x);
//	return 0;
//}

